package math;


public class PI implements SymbolicConstant {

  public static final PI PI = new PI();
  
  @Override
  public boolean isOne() {
    return false;
  }

  @Override
  public boolean isZero() {
    return false;
  }

  @Override
  public ArithmeticExpression derivate(Variable var) {
    return IntegerConstant.ZERO;
  }
  
  @Override
  public String toString() {
    return "PI";
  }

  @Override
  public int countMembers() {
    return 1;
  }

  @Override
  public int getPriority() {
    return 1;
  }
  
  @Override
  public int hashCode() {
    return 314159265;
  }

  @Override
  public ArithmeticExpression simplify() {
    return this;
  }
  
  @Override
  public boolean matches(Expression expr) {
    return expr instanceof PI;
  }

  @Override
  public boolean equals(Object obj) {
    return obj instanceof PI;
  }

  @Override
  public <R> R accept(ExpressionVisitor<R> visitor) {
    return visitor.visitPI(this);
  }
}